﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DAL
{
    public partial class FormularioAcceso
    {
        public bool VerificarAcceso(dbGestionDataContext _db, int idUsuario, int idFormulario, int idObra, int NivelAcceso)
     {

                var w=  from a in _db.EmpleadoObras
                          where a.idObra==idObra & a.idEmpleado==idUsuario
                          select a.Rol;
                if(w.Count()==0)
                {
                    throw new Exception("No tiene acceso a la Obra");
                }

                Rol rol=w.First();

                var nivelAcceso =
                    _db.RolFormularios.Single(a => a.idRol == rol.idInternal & a.idFormulario == idFormulario ).idAcceso;
                
                if (nivelAcceso < NivelAcceso)
                {
                    //de crear ->
                    throw new Exception("No tiene Acceso a la Operacion");

                }
         return true;
     }

        public bool VerificarAcceso(dbGestionDataContext _db, int idUsuario, int idFormulario, int NivelAcceso)
        {

            var w = (from a in _db.EmpleadoObras
                    where a.idEmpleado == idUsuario
                    select a.Rol.idInternal).Distinct();

            var wq = from a in _db.RolFormularios
                     where w.Contains(a.idRol.Value) &
                     a.idFormulario == idFormulario
                    select a;

            if (wq.Count() == 0)
            {
                throw new Exception("No tiene Acceso  a la Operacion");
            }

            
            if (wq.First().idAcceso < NivelAcceso)
            {
                //de crear ->
                throw new Exception("No tiene Acceso a la Operacion");

            }
            return true;
        }


        //public bool VerificarAcceso(dbGestionDataContext _db, int idUsuario, int idFormulario,int idControl, int NivelAcceso)
        //{

        //    var w = (from a in _db.EmpleadoObra
        //             where a.idEmpleado == idUsuario
        //             select a.Rol.idInternal).Distinct();

        //    var wq = from a in _db.RolFormularios
        //             where w.Contains(a.idRol.Value) &
        //             a.idFormulario == idFormulario
        //             select a;

        //    if (wq.Count() == 0)
        //    {
        //        throw new Exception("No tiene Acceso  a la Operacion");
        //    }


        //    if (wq.First().idAcceso < NivelAcceso)
        //    {
        //        de crear ->
        //        throw new Exception("No tiene Acceso a la Operacion");

        //    }
        //    return true;
        //}


       public enum Formulario
        {
            Presupuesto = 1,
            Comparativo = 2,
            OrdenCompra = 3,
            NotaIngreso = 4,
            Notasalida = 5,

        }
    }
}
